# x = 10


# def test():
#     print(f"x = {x}")
#
#
# test()


# # 使用这个函数,把全局变量 x 给改成 20 !
# # 不加 global 会当成在函数内部声明一个局部变量
# def test():
#     global x
#     x = 20
#
#
# test()
# print(f"x = {x}")


# if else while for 这些关键字也会引入“代码块“，但是这些代码块不会对变量的作用域产生影响！
# 在上述语句代码块内部定义的变量，可以在外面被访问

# for i in range(1, 11):
#     print(i)
#
#
# print('---------')
# print(i)


# def test():
#     print('执行函数体代码')
#     print('执行函数体代码')
#     print('执行函数体代码')
#
#
# print('111')
# test()
# print('222')
# test()
# print('333')
# test()
# print('444')


# # 写一个函数,来求n的阶乘(n 是正整数)
# def factor(n):
#     if n == 1:
#         return 1
#     return n * factor(n-1)
#
#
# print(factor(5))
# print(factor(998))

#
# # 调试信息希望在正式发布的版本不要有
# def add(x, y, debug=False):
#     if debug:
#         print(f"调试信息x={x}, y={y}")
#     return x+y
#
#
# result = add(10, 20)
# print(result)
#
# result = add(10, 20, True)
# print(result)


# 关键字参数 ~ 按照形参的名字来进行传参~
def test(x, y):
    print(f"x = {x}")
    print(f"y = {y}")


test(10, 20)
test(x=10, y=20)
test(y=20, x=10)
# 非常明显的告诉程序猿，你的参数要传给谁！
# 另外可以无视形参和实参的顺序

# 位置参数和关键字参数,还可以混着用,只不过混着用的时候要求位置参数在前.关键字参数在后.
# 关键字参数,一般就是搭配默认参数来使用的~
# 一个函数.可以提供很多的参数,来实现对这个函数的内部功能做出一些调整设定~~
# 为了降低使用者的使用成本,就可以把大部分参数设定成默认值~
# 当使用者需要调整其中的一部分参数的时候,就可以搭配关键字参数来进行操作~
